﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using DrugStorehouseMIS.DAL;
using DrugStorehouseMIS.Comm;
using DrugStorehouseMIS.DAL.Interface;

namespace DrugStorehouseMIS.BLL
{
    public class DrugType
    {
        #region 封装属性

        private int mDrugTypeNum;

        public int DrugTypeNum
        {
            get { return mDrugTypeNum; }
            set { mDrugTypeNum = value; }
        }

        private string mDrugTypeName;

        public string DrugTypeName
        {
            get { return mDrugTypeName; }
            set { mDrugTypeName = value; }
        }

        private string mDrugTypeCode;

        public string DrugTypeCode
        {
            get { return mDrugTypeCode; }
            set { mDrugTypeCode = value; }
        }

        #endregion

        private IDrugTypeDAL drugtypeDAL;

        public DrugType()
        {
            drugtypeDAL = Adapter.GetDrugType();
        }

        /// <summary>
        /// 获取对象
        /// </summary>
        /// <param name="dr"></param>
        public void FetchObject(IDataReader dr)
        {
            if (dr!=null)
            {
                mDrugTypeNum = ConvertDataType.CheckFiledInt(dr["drug_type_num"]);
                mDrugTypeName=ConvertDataType.CheckFiledString(dr["drug_type_name"]);
                mDrugTypeCode = ConvertDataType.CheckFiledString(dr["drug_type_code"]);
            }
        }

        public DataTable Display()
        {
            return drugtypeDAL.SelectAll();
        }

        /// <summary>
        /// 根据药品类型名获取整个对象
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public DrugType GetDrugType(string name)
        {
            DrugType obj = new DrugType();
            IDataReader dr = drugtypeDAL.Select(name);
            while (dr != null && dr.Read())
            {
                obj.FetchObject(dr);
            }
            return obj;
        }

        /// <summary>
        /// 创建药品类型
        /// </summary>
        /// <param name="drugType"></param>
        /// <returns></returns>
        public bool CreateDrugType(DrugType drugType)
        {
            return drugtypeDAL.Insert(drugType.mDrugTypeName, drugType.mDrugTypeCode) > 0 ? true : false;
        }

        /// <summary>
        /// 更新药品类型信息
        /// </summary>
        /// <param name="drugType"></param>
        /// <returns></returns>
        public bool SetDrugType(DrugType drugType)
        {
            return drugtypeDAL.Update(drugType.mDrugTypeNum, drugType.mDrugTypeName, drugType.mDrugTypeCode) > 0 ? true : false;
        }

        /// <summary>
        /// 删除药品信息
        /// </summary>
        /// <param name="drugTypeNum"></param>
        /// <returns></returns>
        public bool RemoveDrugType(int drugTypeNum)
        {
            return drugtypeDAL.Delete(drugTypeNum) > 0 ? true : false;
        }

        /// <summary>
        /// 获取全部drugtype
        /// </summary>
        /// <returns></returns>
        public IList<DrugType> GetAllDrugType()
        {
            IList<DrugType> list = new List<DrugType>();
            IDataReader dr = drugtypeDAL.Select();
            while (dr != null && dr.Read())
            {
                DrugType obj = new DrugType();
                obj.FetchObject(dr);
                list.Add(obj);
            }
            if (dr != null) dr.Close();
            return list;
        }
    }
}
